package day21.colllection;

/**
 * 学生管理测试类，用于测试StudentManager的增删改查功能
 */
public class TestStudent {
    public static void main(String[] args) {
        // 创建学生管理对象
        StudentManager manager = new StudentManager();

        System.out.println("======= 学生信息管理系统测试 =======");

        // 测试添加学生功能
        System.out.println("\n--- 测试添加学生功能 ---");
        manager.addStudent(new Student(1001, "张三", 20, "计算机科学与技术"));
        manager.addStudent(new Student(1002, "李四", 19, "软件工程"));
        manager.addStudent(new Student(1003, "王五", 21, "信息安全"));
        manager.addStudent(new Student(1004, "赵六", 20, "物联网工程"));
        manager.addStudent(new Student(1005, "赵六", 20, "大数据技术"));


        // 显示所有学生
        System.out.println("\n--- 显示所有学生 ---");
        manager.displayAllStudents();

        // 测试重复添加
        System.out.println("\n--- 测试重复添加学生 ---");
        manager.addStudent(new Student(1001, "钱七", 22, "人工智能"));

        // 测试根据学号查找学生
        System.out.println("\n--- 测试根据学号查找学生 ---");
        Student student = manager.findStudentById(1002);
        if (student != null) {
            System.out.println("找到学生：" + student);
        } else {
            System.out.println("未找到学号为1002的学生");
        }

        // 测试根据姓名查找学生
        System.out.println("\n--- 测试根据姓名查找学生 ---");
        manager.addStudent(new Student(1006, "张三", 22, "网络工程")); // 添加同名学生
        System.out.println("查找姓名为\"张三\"的学生：");
        java.util.List<Student> students = manager.findStudentsByName("张三");
        for (Student s : students) {
            System.out.println(s);
        }

        // 测试修改学生信息
        System.out.println("\n--- 测试修改学生信息 ---");
        manager.updateStudent(1002, "李四", 20, "软件工程与管理");

        // 显示修改后的学生信息
        System.out.println("修改后的学生信息：");
        Student updatedStudent = manager.findStudentById(1002);
        System.out.println(updatedStudent);

        // 测试删除学生
        System.out.println("\n--- 测试删除学生 ---");
        manager.deleteStudent(1004);

        // 显示删除后的所有学生
        System.out.println("\n--- 显示删除后的所有学生 ---");
        manager.displayAllStudents();

        // 测试删除不存在的学生
        System.out.println("\n--- 测试删除不存在的学生 ---");
        manager.deleteStudent(1007);

        // 显示最终统计信息
        System.out.println("\n--- 最终统计信息 ---");
        System.out.println("当前学生总数：" + manager.getStudentCount());
    }
}